package com.example.managesystem.mapper;

import com.example.managesystem.entity.Item;
import com.example.managesystem.vo.ItemMaintextVO;
import com.example.managesystem.vo.ItemProgressVO;
import com.example.managesystem.vo.SetItemFailureVO;
import org.apache.ibatis.annotations.*;

import java.time.LocalDateTime;
import java.util.List;

@Mapper
public interface ItemMapper {

    /**
     * 根据itemId查询项目基本信息
     * @param itemId
     * @return
     */
    @Select("select item_id,item_name,dept,item_level,create_time,item_status from item where item_id = #{itemId}")
    ItemMaintextVO getByItemId(@Param("itemId") Integer itemId);

    @Select("select item_name from item where item_id = #{itemId}")
    String getItemName(Integer itemId);


    void saveItem(@Param("item") Item item);

    @Select("select * from item where item_id = #{itemId}")
    Item getItemByItemId(Integer itemId);

    /**
     * 根据项目id查询项目文件id
     * @param itemId
     * @return
     */
    @Select("select file_id from file where item_id = #{itemId}")
    List<Integer> getFileIdByitemId(Integer itemId);

    @Update("update item set item_status = '未立项审核' where item_id = #{itemId}")
    void updateStatusByItemId(Integer itemId);

    /**
     * 查询项目进展记录的相关信息
     * @param itemId
     * @return
     */
    @Select("select item_name,item_id,dept,item_level,create_time,item_status,commit_log from item where item_id = #{itemId}")
    ItemProgressVO getProgressByItemId(Integer itemId);

    @Select("select prinuserid from item where item_id = #{itemId}")
    String getPrinuseridByItemId(Integer itemId);

    @Select("select conduserid from item where item_id = #{itemId}")
    String getConduseridByItemId(Integer itemId);

    /**
     * 更新项目负责人id
     * @param itemId
     * @param userid
     */
    @Update("update item set prinuserid = #{userid} where item_id = #{itemId}")
    void updatePrinuseridByItemId(@Param("itemId") Integer itemId, @Param("userid") String userid);

    /**
     * 更新项目审核人id
     * @param itemId
     * @param userid
     */
    @Update("update item set conduserid = #{userid} where item_id = #{itemId}")
    void updateConduseridByItemId(@Param("itemId")Integer itemId, @Param("userid")String userid);

    /**
     * 查询立项失败项目信息
     * @param itemId
     * @return
     */
    @Select("select item_name,item_id,item_type,prinuserid,conduserid from item where item_id = #{itemId}")
    SetItemFailureVO getSetItemFailureByItemId(Integer itemId);

    /**
     * 查询项目状态
     * @param itemId
     * @return
     */
    @Select("select item_status from item where item_id = #{itemId}")
    String getItemStatus(Integer itemId);

    /**
     * 更新项目状态为 立项驳回
     * @param itemId
     * @param status
     */
    @Update("update item set item_status = #{status} where item_id = #{itemId}")
    void updateItemStatus(@Param("itemId") Integer itemId, @Param("status") String status);

    /**
     * 更新项目审核日志 以及提交大创日志的次数
     * @param itemId
     * @param commitLog
     * @param examLog
     */
    @Update("update item set commit_log = #{commitLog},exam_log = #{examLog} where item_id = #{itemId}")
    void updateLog(@Param("itemId")Integer itemId, @Param("commitLog")String commitLog, @Param("examLog")String examLog);
}
